gulpfile.js ➔ ???   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 8
Bugs 0 Features 2
Metric Value
cc 1
c 8
b 0
f 2
nc 1
nop 0
dl 0
loc 4
rs 10
1
'use strict';
2
3
const G = require('gulp-load-plugins')(),
4
    gulp = require('gulp'),
5
    argv = require('yargs').argv;
6
7
const minify = !!(argv.production);
8
9
const plumberr = function (err) {
10
    console.error(err);
11
    this.emit('end');
12
};
13
14
gulp.task('build', ['css', 'fonts', 'images', 'js']);
15
16
gulp.task('clean', () => {
17
    return gulp.src('/public_html/{cs,font,image,j}s/**/*')
18
        .pipe(G.rimraf());
19
});
20
21
gulp.task('css', ['css:app', 'css:portal']);
22
23
gulp.task('css:app', () => {
24
    return gulp.src('app/assets/less/app.less')
25
        .pipe(G.plumber({errorHandler: plumberr}))
26
        .pipe(G.less())
27
        .pipe(G.autoprefixer({
28
            browsers: ['last 2 versions', 'ie 10'],
29
            cascade: false
30
        }))
31
        .pipe(G.if(minify, G.cssmin()))
32
        .pipe(G.addSrc.prepend('bower_components/select2/dist/css/select2.min.css'))
33
        .pipe(G.addSrc.append([
34
            'bower_components/font-awesome/css/font-awesome.min.css',
35
            'bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css',
36
            'bower_components/datatables.net-responsive-bs/css/responsive.bootstrap.min.css',
37
        ]))
38
        .pipe(G.concat('app.css'))
39
        .pipe(gulp.dest('public_html/css'));
40
});
41
42
gulp.task('css:portal', () => {
43
    return gulp.src('app/assets/less/portal.less')
44
        .pipe(G.plumber({errorHandler: plumberr}))
45
        .pipe(G.less())
46
        .pipe(G.autoprefixer({
47
            browsers: ['last 2 versions', 'ie 10'],
48
            cascade: false
49
        }))
50
        .pipe(G.if(minify, G.cssmin()))
51
        .pipe(G.addSrc.append('bower_components/font-awesome/css/font-awesome.min.css'))
52
        .pipe(G.concat('portal.css'))
53
        .pipe(gulp.dest('public_html/css'));
54
});
55
56
gulp.task('default', ['rebuild'], () => gulp.start('watch'));
57
58
gulp.task('fonts', () => {
59
    var paths = [
60
        'bower_components/bootstrap/fonts/*',
61
        'bower_components/font-awesome/fonts/*',
62
    ];
63
    return gulp.src(paths)
64
        .pipe(gulp.dest('public_html/fonts'));
65
});
66
67
gulp.task('images', () => {
68
    return gulp.src('app/assets/images/*')
69
        .pipe(gulp.dest('public_html/images'));
70
});
71
72
gulp.task('js', ['js:app', 'js:portal']);
73
74
gulp.task('js:app', () => {
75
    return gulp.src('app/assets/js/app.js')
76
        .pipe(G.plumber({errorHandler: plumberr}))
77
        .pipe(G.include())
78
        .pipe(G.babel())
79
        .pipe(G.addSrc.prepend([
80
            'bower_components/bootbox.js/bootbox.js',
81
            'bower_components/sprintfjs/sprintf.js',
82
        ]))
83
        .pipe(G.if(minify, G.uglify()))
84
        .pipe(G.addSrc.prepend([
85
            'bower_components/jquery/dist/jquery.min.js',
86
            'bower_components/bootstrap/dist/js/bootstrap.min.js',
87
            'bower_components/datatables.net/js/jquery.dataTables.min.js',
88
            'bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js',
89
            'bower_components/datatables.net-responsive/js/dataTables.responsive.min.js',
90
            'bower_components/datatables.net-responsive-bs/js/responsive.bootstrap.js',
91
            'bower_components/moment/min/moment-with-locales.min.js',
92
            'bower_components/select2/dist/js/select2.min.js',
93
        ]))
94
        .pipe(G.concat('app.js'))
95
        .pipe(gulp.dest('public_html/js'));
96
});
97
98
gulp.task('js:portal', () => {
99
    return gulp.src('app/assets/js/portal.js')
100
        .pipe(G.plumber({errorHandler: plumberr}))
101
        .pipe(G.include())
102
        .pipe(G.babel())
103
        .pipe(G.if(minify, G.uglify()))
104
        .pipe(G.addSrc.prepend([
105
            'bower_components/jquery/dist/jquery.min.js',
106
            'bower_components/bootstrap/dist/js/bootstrap.min.js',
107
        ]))
108
        .pipe(G.concat('portal.js'))
109
        .pipe(gulp.dest('public_html/js'));
110
});
111
112
gulp.task('rebuild', ['clean'], () => gulp.start('build'));
113
114
gulp.task('watch', () => {
115
    G.watch(
116
        ['app/assets/less/imports/*.less', 'app/assets/less/app.less'],
117
        G.batch((e, done) => gulp.start('css:app', done))
118
    );
119
    G.watch(
120
        ['app/assets/less/imports/*.less', 'app/assets/less/portal.less'],
121
        G.batch((e, done) => gulp.start('css:portal', done))
122
    );
123
    G.watch(
124
        ['app/assets/js/imports/*.js', 'app/assets/js/app.js'],
125
        G.batch((e, done) => gulp.start('js:app', done))
126
    );
127
    G.watch(
128
        ['app/assets/js/imports/*.js', 'app/assets/js/portal.js'],
129
        G.batch((e, done) => gulp.start('js:portal', done))
130
    );
131
});
132